software engineering, multitier architecture (often referred to as n-tier architecture) is a client–server architecture in which various levels of software architecture are physically separated. The most common use of multitier architecture is the three-tier architecture, which separates User interface, application processing and data management functions, such as in the case of Cisco's hierarchical internetworking model. Other tiers of separation may include the service layer, Business logic, data access layer, and persistence layer.
N-tier application architecture provides a model by which developers can modify or add to a specific tier in the software development process instead of reworking the entire application. It is commonly used for small and simple applications because of its simplicity and low cost. In web development, three-tier architecture is often used to describe that comprise a front-end web server serving static content and some web cache dynamic content, a middle dynamic content processing and generation application server, and a back-end database or data store.
In a strict layered system, each layer depends on the layer below it and can exist without the layers above it. In a relaxed layered system, a layer can also depend on all of the layers below it, creating additional couplings between layers.Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael (1996-08). Pattern-Oriented Software Architecture, Volume 1, A System of Patterns. Wiley, August 1996. . Retrieved from http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471958697.html. Some multitier architectures use a hybrid approach so that some layers are strict while other layers are relaxed. N-tier architecture may also be implemented with the model–view–presenter pattern.
The terms layer and tier are often used interchangeably, although layer is sometimes used to refer to a conceptual software logic structuring mechanism, while tier is used to refer to the physical hardware structuring mechanism for system infrastructure. Deployment Patterns (Microsoft Enterprise Architecture, Patterns, and Practices)Fowler, Martin "Patterns of Enterprise Application Architecture" (2002). Addison Wesley. In this usage, a three-layer solution could be deployed on a single tier, as in the case of an some database-centric architectures called RDBMS-only architecture or in personal workstations. Deployment Patterns (Microsoft Enterprise Architecture, Patterns, and Practices)
The more usual convention is that the application layer (or service layer) is considered a sublayer of the business layer, typically encapsulating the API definition surfacing the supported business functionality. The application/business layers can, in fact, be further subdivided to emphasize additional sublayers of distinct responsibility. For example, if the model–view–presenter pattern is used, the presenter sublayer might be used as an additional layer between the user interface layer and the business/application layer (as represented by the model sublayer). If the application architecture has no explicit distinction between the business layer and the presentation layer (i.e., the presentation layer is considered part of the business layer), then a traditional client-server (two-tier) model has been implemented.
Some also identify a separate layer called the business infrastructure layer (BI), located between the business layer(s) and the infrastructure layer(s). It is also sometimes called the "low-level business layer" or the "business services layer". This layer is very general and can be used in several application tiers (e.g. a CurrencyConverter). Applying UML and Patterns, 3rd edition, page 203
The infrastructure layer can be partitioned into different levels (high-level or low-level technical services). Developers often focus on the persistence (data access) capabilities of the infrastructure layer and therefore only talk about the persistence layer or the data access layer (instead of an infrastructure layer or technical services layer). In other words, the other kind of technical services is not always explicitly thought of as part of any particular layer.. The Data Access layer normally contains an object known as the Data Access Object (DAO).
In a strict layered system, each layer depends on the layer below it and can exist without the layers above it. In a relaxed layered system, a layer can also depend on all of the layers below it and not merely the layer directly below it. The relaxed layered system has more couplings and is more difficult to change. Some multitier architectures use a hybrid approach so that some layers are strict while other layers are relaxed.
Apart from the usual advantages of modular software with well-defined interfaces, the three-tier architecture is intended to allow any of the three tiers to be upgraded or replaced independently in response to changes in requirements or technology. For example, a change of operating system in the presentation tier would only affect the user interface code. Typically, the user interface runs on a desktop PC or workstation and uses a standard graphical user interface, functional process logic that may consist of one or more separate modules running on a workstation or application server, and an RDBMS on a database server or mainframe that contains the computer data storage logic. The middle tier may be multitiered itself (in which case the overall architecture is called an " n-tier architecture").
Generally, the term "tiers" is used to describe physical distribution of components of a system on separate servers, computers, or networks (processing nodes). A three-tier architecture then will have three processing nodes. The term "layers" refers to a logical grouping of components which may or may not be physically located on one processing node.
|
|